﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using System.Data.SqlClient;

namespace DAO
{
    public class HoaDon_DAO
    {
        BanHang_LinQDataContext db = new BanHang_LinQDataContext();
        List<HoaDon> listds = new List<HoaDon>();

        // 1.phương thức lấy danh sách tất cả hóa đơn
        public List<HoaDon> LayDanhSach_HoaDon()
        {
            List<HoaDon> hd = db.HoaDons.Where(hoadon => hoadon.isDelete == 0).ToList();
            return hd;
        }

        // 2.phương thức lấy thông tin hóa đơn theo mã hóa đơn
        public HoaDon LayThongTin_HoaDon(int mahd)
        {
            HoaDon hd = db.HoaDons.SingleOrDefault(h => h.MaHoaDon == mahd && h.isDelete == 0);
            return hd;
        }

        // 3.phương thức lấy thông tin hóa đơn theo userID
        public List<HoaDon> LayThongTin_HoaDonTheoTaiKhoan(int userID)
        {
            List<HoaDon> hd = db.HoaDons.Where(h => h.UserID == userID && h.isDelete == 0).ToList();
            return hd;
        }

        // 4.phương thức lấy thông tin hóa đơn theo ngày đặt mua
        public List< HoaDon> LayThongTin_HoaDonTheoNgayMua(DateTime ngay)
        {
            List<HoaDon> hd = db.HoaDons.Where(h => h.NgayDatMua == ngay && h.isDelete == 0).ToList();
            return hd;
        }

        // 5.phương thức thêm hóa đơn 
        public bool Them_HoaDon(HoaDon hd)
        {
            try
            {
                db.HoaDons.InsertOnSubmit(hd);
                db.SubmitChanges();
                return true;
            }
            catch (SqlException ex)
            {
                throw ex;
                return false;
            }
        }

        // 6.phương thức xóa hóa đơn
        public bool Xoa_HoaDon(HoaDon hd)
        {
            try
            {
                HoaDon hoadon = db.HoaDons.SingleOrDefault(h => h.MaHoaDon == hd.MaHoaDon);
                hoadon.isDelete = 1;
                db.SubmitChanges();
                return true;
            }
            catch (SqlException ex)
            {
                throw ex;
                return false;
            }
        }

        // 7.phương thức sửa thông tin hóa đơn
        public bool Sua_HoaDon(HoaDon hd)
        {
            try
            {
                HoaDon hoadon = db.HoaDons.SingleOrDefault(h => h.MaHoaDon == hd.MaHoaDon && h.isDelete == 0);
                hoadon.UserID = hd.UserID;
                hoadon.NgayDatMua = hd.NgayDatMua;
                hoadon.TongTien = hd.TongTien;
                hoadon.TinhTrang = hd.TinhTrang;
                hoadon.GhiChu = hd.GhiChu;
                hoadon.DiaChiGiaoHang = hd.DiaChiGiaoHang;
                db.SubmitChanges();
                return true;
            }
            catch (SqlException ex)
            {
                throw ex;
                return false;
            }
        }

    }
}
